package com.yunbiji.demo.service.impl;

import com.yunbiji.demo.dao.CnUserDao;
import com.yunbiji.demo.entity.CnUser;
import com.yunbiji.demo.service.CnUserService;
import com.yunbiji.demo.util.NoteResult;
import com.yunbiji.demo.util.NoteUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * (CnUser)表服务实现类
 *
 * @author makejava
 * @since 2021-06-02 08:36:36
 */
@Service("cnUserService")
public class CnUserServiceImpl implements CnUserService {
    @Resource
    private CnUserDao cnUserDao;


    public NoteResult<CnUser> checkLogin(String username, String password) {
        //接受结果数据
        NoteResult<CnUser> result=new NoteResult<CnUser>();
        //按参数name查询数据库
        CnUser user = cnUserDao.findByName(username);
        //检测用户名
        if(user==null) {
            result.setStatus(1);
            result.setMsg("用户名不存在");
            return result;
        }
        //检测密码
        String md5Password= NoteUtil.md5(password);//对输入的密码进行加密，然后进行比较
        if(!user.getCnUserPassword().equals(md5Password)) {
            result.setStatus(2);
            result.setMsg("密码错误");
            return result;
        }
        //用户名跟密码都正确
        result.setStatus(0);
        result.setMsg("登录成功");
        result.setData(user);
        System.out.println("dd"+result.getData().getCnUserId());
        return result;
    }

    //保存一个用户名，输入类型为User(注册方法)
    public NoteResult<Object> addUser(String username, String password, String nickname) {
        //接受结果数据
        NoteResult<Object> result = new NoteResult<Object>();
        //用户检测
        CnUser hasUser = cnUserDao.findByName(username);
        if(hasUser!=null) {//用户名存在
            result.setStatus(1);//用户名已经被占用
            result.setMsg("用户已经被占用");
            return result;
        }
        //用户名可用，添加用户的操作
        //添加用户
        CnUser user = new CnUser();
        //设置用户名
        user.setCnUserName(username);
        //设置密码,密码存储需加密
        String md5Password = NoteUtil.md5(password);
        user.setCnUserPassword(md5Password);
        //设置昵称
        user.setCnUserNick(nickname);
        //设置主键id
        String id = NoteUtil.createId();
        user.setCnUserId(id);
        //执行保存操作
        cnUserDao.save(user);
        //构建返回结果
        result.setStatus(0);
        result.setMsg("注册成功");
        return result;
    }
    //更改用户密码操作
    public NoteResult<Object> changeUser(String userName, String last_password, String final_password) {
        System.out.println(last_password);
        System.out.println(final_password);
        System.out.println(userName);
        //返回结果
        NoteResult<Object> result=new NoteResult<Object>();
        //查找已经登录的用户的信息
        CnUser user = cnUserDao.findByName(userName);
        //获得原密码
        String password = user.getCnUserPassword();
        //对传入的密码需加密才能比较
        last_password=NoteUtil.md5(last_password);
        final_password=NoteUtil.md5(final_password);
        System.out.println(password);
        System.out.println(last_password);
        System.out.println(final_password);
        //进行比较 密码不相等的话
        if(!password.equals(last_password)) {
            result.setStatus(1);
            result.setMsg("原密码不正确");
            return result;
        }else if(password.equals(final_password)) {
            result.setStatus(2);
            result.setMsg("要修改的密码与原密码一致");
            return result;
        }else{
            //密码正确，执行修改密码操作
            user.setCnUserPassword(final_password);
            cnUserDao.change(user);
            result.setStatus(0);
            result.setMsg("修改密码成功");
            return result;
        }
    }

}